package edu.ucue.ptc.rest;

import edu.ucue.ptc.gco.mdl.Empleado;
import edu.ucue.ptc.gco.mdl.Usuario;
import edu.ucue.ptc.gco.ngc.EmpleadoManagerLocal;
import edu.ucue.ptc.gco.ngc.UsuarioManagerLocal;
import edu.ucue.ptc.gco.util.AtributoInvalidoException;
import java.io.Serializable;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateful;
import javax.ejb.Stateless;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.PathParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.enterprise.context.RequestScoped;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;

/**
 * REST Web Service
 * @author edwin
 */
// http://localhost:8080/ejemrest/webresources/login/1
// http://localhost:8080/ejemrest/webresources/callback=1&nombre=ed&clave=12
// http://localhost:8080/ejemrest/webresources/login/jquery/edwin/123
@Path("login/{nombre}/{clave}/{callback}")
@RequestScoped
public class LoginResource implements Serializable {

    @Context
    private UriInfo context;
    
    @Inject
    private UsuarioManagerLocal UsuarioManager;
    
    @Inject
    private EmpleadoManagerLocal EmpleadoManager;
    
    //vodehaus json object
    //[json serializer] guava
    //gson
    
    /**
     * Creates a new instance of LoginResource
     */
    public LoginResource() {
    }

    /**
     * Retrieves representation of an instance of edu.ucue.gped.LoginResource
     * @return an instance of java.lang.String
     */
    @GET
    @Produces("application/json")
    @Named
    public String getJson(@PathParam("callback") String callback,@PathParam("nombre") String user, 
    @PathParam("clave") String pass) {
        int IdUsuario = UsuarioManager.verificarUsuario(user, pass);
        //String a=",\"valor\":\""+verificarUsuario;
        
        if(IdUsuario!=-1)
        {       
                List<Empleado> listaEmpleado;
            try {
                listaEmpleado = EmpleadoManager.listarEmpleado(user, pass);
                if(listaEmpleado.size()==0)
                {
                    //return callback+"({\"callback\":\""+callback+"\",\"errormsg\":\""+"Usted no esta habilitado para esta aplicación"+"\"})";
                }
                for(int i=0; i<listaEmpleado.size(); i++)
                {
                    if(listaEmpleado.get(i).getUsuario().getIdUsuario()==IdUsuario)
                        
                        return callback+"({\"callback\":\""+callback+"\",\"id\":\""+listaEmpleado.get(i).getIdPersona()+"\",\"ci\":\""+listaEmpleado.get(i).getCedulaRuc()+
                        "\",\"nombre\":\""+listaEmpleado.get(i).getNombres()+"\",\"apellido\":\""+listaEmpleado.get(i).getApellidos()+"\",\"cargo\":\""+listaEmpleado.get(i).getCargo().getNombre()+"})";
                
                }
            } catch (AtributoInvalidoException ex) {
                Logger.getLogger(LoginResource.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return callback+"({\"callback\":\""+callback+"\",\"errormsg\":\""+"Usuario no registrado"+"\"})";
    }
}
